/*
 * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package org.graalvm.visualizer.upgrader;

/**
 * @author Radek Matous
 */
public class PathTransformation {
    private String version;

    private PathTransformation(String version) {
        this.version = version;
    }

    public static PathTransformation getInstance(String version) {
        return new PathTransformation(version);
    }

    public String transformPath(String path) {
        boolean isCreator = version.startsWith("2_");//NOI18N
        if (isCreator) {
            return transformCreatorPath(path);
        }

        boolean i118364 = path.startsWith("Templates/Classes/");//NOI18N
        if (i118364) {
            if (!version.startsWith("6")) {
                return transformTemplatePath118364(path);
            }
        }

        return path;
    }

    private String transformTemplatePath118364(String path) {
        return path.replace("Templates/Classes/", "Templates/Oldies/Classes/");//NOI18N
    }

    //CREATOR
    private String transformCreatorPath(String path) {
        String keyToReplace = null;
        String[] keysToReplace = new String[]{"context.xml"};//NOI18N
        for (String key : keysToReplace) {
            if (path.startsWith(key)) {
                keyToReplace = key;
                break;
            }
        }
        if (keyToReplace != null) {
            return path.replace(keyToReplace, "config/" + version + "/" + keyToReplace);//NOI18N
        }
        return path;
    }
}
